Alan Mackenzie [Thu, 29 Dec 2016 09:22:36 +0000 (09:22 +0000)]
Initialize edebug-offset-indices to a cons, not nil. Fixes bug #16184.
This is because there are times when this variable is changed by setcar before
an atom is pushed onto it by debug-enter. This happens, for example, whilst
instrumenting c-font-lock-declarations in .../lisp/progmodes/cc-fonts.el.
* lisp/emacs-lisp/edebug.el (edebug-offset-indices): initialize to '(0).
Paul Eggert [Tue, 27 Dec 2016 23:27:40 +0000 (15:27 -0800)]
; fix indenting
Problem reported by Chris Gregory in:
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00968.html
* src/keyboard.c (read_event_from_main_queue): Fix indenting.
Michael Albinus [Tue, 27 Dec 2016 19:06:27 +0000 (20:06 +0100)]
Release Tramp 2.3.1
* doc/misc/trampver.texi:
* lisp/net/trampver.el: Change version to "2.3.1".
* lisp/net/tramp.el (tramp-eshell-directory-change): Add it to
`eshell-mode-hook' but `eshell-first-time-mode-hook'.
* lisp/net/tramp-compat.el (tramp-compat-file-name-quoted-p)
(tramp-compat-file-name-quote)
(tramp-compat-file-name-unquote): Embed them in `eval-and-compile'.
Paul Eggert [Tue, 27 Dec 2016 18:32:44 +0000 (10:32 -0800)]
Simplify prog1 implementation
Inspired by a suggestion from Chris Gregory in:
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00965.html
On my platform, this generates exactly the same machine insns.
* src/eval.c (prog_ignore): Rename from unwind_body, since
it’s more general than that. All callers changed.
(Fprog1): Simplify by using prog_ignore.
(Fwhile): Clarify by using prog_ignore.
Stefan Monnier [Tue, 27 Dec 2016 17:44:32 +0000 (12:44 -0500)]
* lisp/emacs-lisp/inline.el: Fix apply-conversion (bug#25280)
(inline--dont-quote): Quote the function with #' when passing it to `apply'.
Mark Oteiza [Tue, 27 Dec 2016 16:09:39 +0000 (11:09 -0500)]
Remove a use of lexical-let
* lisp/gnus/message.el (message-completion-function): Just use let,
since the file now uses lexical-binding.
Ken Brown [Mon, 26 Dec 2016 18:24:43 +0000 (13:24 -0500)]
Improve filenotify-tests.el on Cygwin (Bug #21804)
* test/lisp/filenotify-tests.el [CYGWIN]
(file-notify--test-read-event-timeout): Increase.
(file-notify--test-with-events): Add delay before executing body.
(file-notify-test02-events, file-notify-test04-file-validity):
Adjust expected results.
Eli Zaretskii [Tue, 27 Dec 2016 08:12:06 +0000 (10:12 +0200)]
Fix expand-file-name on DOS_NT systems when /: escaping is used
* src/fileio.c (Fexpand_file_name) [DOS_NT]: Don't expand "~" in
file names escaped by "/:". Don't recursively expand
default-directory escaped with "/:" which is not followed by a
drive spec. (Bug#25183)
Bake Timmons [Tue, 27 Dec 2016 06:39:02 +0000 (06:39 +0000)]
Fix `mail-sources' value of `(group)' in Gnus manual (bug#25275)
* doc/misc/gnus.texi (Mail Source Specifiers):
Replace wrong `mail-sources' value of `(group)' in Gnus manual with
the correct `((group))' value. (bug#25275) (tiny change)
Bake Timmons [Tue, 27 Dec 2016 06:38:41 +0000 (06:38 +0000)]
Fix bug in customizing `mail-sources' variable (bug#25274)
* lisp/gnus/mail-source.el (mail-sources): Use list instead of cons
for lone argument. (bug#25274) (tiny change)
Philipp Stephani [Wed, 23 Nov 2016 19:29:36 +0000 (20:29 +0100)]
Checkdoc: Don't require a space before an arg list
See Bug#24998.
* lisp/emacs-lisp/checkdoc.el (checkdoc-defun-regexp): Don't require a
space before a argument list.
* test/lisp/emacs-lisp/checkdoc-tests.el (checkdoc-tests--bug-24998):
Add unit test.
Michihito Shigemura [Tue, 20 Dec 2016 12:12:35 +0000 (21:12 +0900)]
Add zshrc and zshenv detection to sh-mode (bug#25217)
* lisp/progmodes/sh-script.el (sh-mode): Add zsh string-match
Copyright-paperwork-exempt: yes
Paul Eggert [Sun, 25 Dec 2016 18:12:39 +0000 (10:12 -0800)]
Fix typo in lisp.h reordering patch
* src/lisp.h (XUNTAG) [!USE_LSB_TAG]: Remove duplicate defn.
Reported by Eli Zaretskii (Bug#25128#19).
Paul Eggert [Sun, 25 Dec 2016 18:02:27 +0000 (10:02 -0800)]
regex.h now includes sys/types.h
* src/dired.c, src/emacs.c, src/search.c, src/syntax.c, src/thread.h:
Do not include sys/types.h; no longer needed.
* src/regex.h: Include <sys/types.h>, as that's what Gnulib and
glibc regex.h does, and POSIX has blessed this since 2008.
Paul Eggert [Sun, 25 Dec 2016 17:17:02 +0000 (09:17 -0800)]
Reorder lisp.h to declare types before using them
This puts basic functions for types to be after the corresponding
type definitions. This is a more-common programming style in C,
and will make it easier to port Emacs to gcc
-fcheck-pointer-bounds, since the functions now have access to the
corresponding types' sizes. This patch does not change the code;
it just moves declarations and definitions and removes
no-longer-needed forward declarations (Bug#25128).
* src/buffer.c, src/data.c, src/image.c:
Include process.h, for PROCESSP.
* src/buffer.h (BUFFERP, CHECK_BUFFER, XBUFFER):
* src/process.h (PROCESSP, CHECK_PROCESS, XPROCESS):
* src/termhooks.h (TERMINALP, XTERMINAL):
* src/window.h (WINDOWP, CHECK_WINDOW, XWINDOW):
* src/thread.h (THREADP, CHECK_THREAD, XTHREAD, MUTEXP, CHECK_MUTEX)
(XMUTEX, CONDVARP, CHECK_CONDVAR, XCONDVAR):
Move here from lisp.h.
* src/intervals.h: Include buffer.h, for BUFFERP.
Include lisp.h, for Lisp_Object.
* src/lisp.h: Reorder declarations and definitions as described
above. Move thread includes to be later, so that they can use the
reordered definitions. Move some symbols to other headers (noted
elsewhere). Remove forward decls that are no longer needed.
* src/thread.h: Include systhread.h here, not in lisp.h,
since lisp.h itself does not need systhread.h.
Dima Kogan [Tue, 20 Dec 2016 07:23:14 +0000 (23:23 -0800)]
diff-mode auto-refines only after a successful motion
Prior to this patch (if enabled) auto-refinement would kick in after all
hunk navigation commands, even if the motion failed. This would result
in a situation where the hunk navigation would signal an error and beep,
but yet still accomplish potentially useful work, by auto-refining.
This patch moves the auto-refinement code to only run when a motion was
successful
* lisp/vc/diff-mode.el (diff--internal-hunk-next,
diff--internal-hunk-prev): Removed auto-refinement-triggering code
* lisp/vc/diff-mode.el (diff--wrap-navigation): Added
auto-refinement-triggering code
Dima Kogan [Tue, 20 Dec 2016 07:25:28 +0000 (23:25 -0800)]
diff-mode is able to better handle file headers
This fixes a regression introduced in
http://git.savannah.gnu.org/gitweb/?p=emacs.git;a=commit;h=
2c8a7e50d24daf19ea7d86f1cfeaa98a41c56085
This bug was filed in
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25105
Patches generated from a VCS such as git contain a patch message at the
start, and diff-mode is now once-again able to properly able to ignore
this message when issuing navigation commands around the message.
* lisp/vc/diff-mode.el (diff-beginning-of-file-and-junk): More
thoroughly ignore the header when looking for a beginning of file
diffs.
Paul Eggert [Sun, 25 Dec 2016 01:03:22 +0000 (17:03 -0800)]
Use libpng-config --ldflags, not --libs
Problem reported by James K. Lowden (Bug#25268).
* configure.ac (LIBPNG): Pass --ldflags, not --libs, to libpng-config.
Noam Postavsky [Sat, 24 Dec 2016 14:41:46 +0000 (09:41 -0500)]
Remove redundant `save-match-data' in whitespace.el
* lisp/whitespace.el (whitespace-cleanup, whitespace-cleanup-region):
(whitespace-report-region): Remove redundant `save-match-data' calls.
Noam Postavsky [Wed, 21 Dec 2016 04:02:48 +0000 (23:02 -0500)]
Fix whitespace eob cleanup
* lisp/whitespace.el (whitespace-empty-at-eob-regexp): Match any number
of empty lines at end of buffer.
* test/lisp/whitespace-tests.el (whitespace-cleanup-eob): New test.
(whitespace-tests--cleanup-string): New helper function for tests.
Hong Xu [Sat, 24 Dec 2016 12:35:12 +0000 (14:35 +0200)]
Fix timezone detection of parse-iso8601-time-string
* parse-time.el (parse-iso8601-time-string): Fix timezone
parsing. Add a doc string. (Bug#25086)
* editfns.c (Fdecode-time): Doc fix.
* emacs-mime.texi (time-date): Add an example for
parse-iso8601-time-string.
* parse-time-tests.el (parse-time-tests): Add tests for
parse-iso8601-time-string.
Paul Eggert [Sat, 24 Dec 2016 05:38:59 +0000 (21:38 -0800)]
Simplify exec_byte_code via moving decls etc.
* src/bytecode.c (exec_byte_code): Simplify, mostly by moving
initializers into decls, and by omitting some unnecessary changes
to ‘top’.
Paul Eggert [Sat, 24 Dec 2016 05:13:58 +0000 (21:13 -0800)]
Remove interpreter’s byte stack
This improves performance overall on my benchmark on x86-64,
since the interpreted program-counter resides in a machine
register rather than in RAM.
* etc/DEBUG, src/.gdbinit: Remove xbytecode GDB command, as there
is no longer a byte stack to decode.
* src/bytecode.c (struct byte_stack, byte_stack_list)
(relocate_byte_stack): Remove. All uses removed.
(FETCH): Simplify now that pc is now local (typically, in a
register) and no longer needs to be relocated.
(CHECK_RANGE): Remove. All uses now done inline, in a different way.
(BYTE_CODE_QUIT): Remove; now done by op_relative_branch.
(exec_byte_code): Allocate a copy of the function’s bytecode,
so that there is no problem if GC moves it.
* src/lisp.h (struct handler): Remove byte_stack member.
All uses removed.
* src/thread.c (unmark_threads): Remove. All uses removed.
* src/thread.h (struct thread_state): Remove m_byte_stack_list member.
All uses removed. m_stack_bottom is now the first non-Lisp field.
Paul Eggert [Sat, 24 Dec 2016 04:30:11 +0000 (20:30 -0800)]
BYTE_CODE_SAFE typo fix
* src/bytecode.c (FETCH): Depend on the value of BYTE_CODE_SAFE,
not on whether it is defined.
Paul Eggert [Sat, 24 Dec 2016 03:01:36 +0000 (19:01 -0800)]
BYTE_CODE_SAFE cleanups
* src/bytecode.c (BYTE_MAINTAIN_TOP): Remove; no longer needed.
(struct byte_stack) [BYTE_MAINTAIN_TOP]:
Remove unused members ‘top’ and ‘bottom’.
(exec_byte_code): Nest inside { } to avoid GCC warning about
jumping over declaration when compiled with -DBYTE_CODE_SAFE.
Thien-Thi Nguyen [Sat, 24 Dec 2016 02:43:37 +0000 (03:43 +0100)]
last-chance: new utility lib for dangling deterrence
* admin/last-chance.el: New file.
Paul Eggert [Sat, 24 Dec 2016 02:28:44 +0000 (18:28 -0800)]
Use max_align_t instead of void *
* src/thread.c (run_thread): Don’t assume void * is aligned enough.
Eli Zaretskii [Fri, 23 Dec 2016 14:17:52 +0000 (16:17 +0200)]
Prevent infloops in redisplay due to truncate-lines and overlays
* src/xdisp.c (hscroll_window_tree): Avoid inflooping in
redisplay_window when a screen line ends in an overlay string with
a newline. (Bug#25246)
Philipp Stephani [Sat, 10 Dec 2016 14:36:11 +0000 (15:36 +0100)]
Treat incomplete integer literals as errors
See Bug#25120.
* src/lread.c (read_integer): Treat incomplete integer literals as errors.
* test/src/lread-tests.el (lread-empty-int-literal): New unit test for
incomplete integer literals.
Michael Albinus [Fri, 23 Dec 2016 08:31:23 +0000 (09:31 +0100)]
* test/lisp/net/tramp-tests.el (tramp--test-check-files): Make it robust.
Eli Zaretskii [Fri, 23 Dec 2016 08:24:30 +0000 (10:24 +0200)]
Avoid aborts due to unaligned byte stack of threads
* src/thread.c (run_thread): Make sure the pointers to thread byte
stack are properly aligned. (Bug#25247)
Mark Oteiza [Fri, 23 Dec 2016 00:09:01 +0000 (19:09 -0500)]
; Remove mention of gm
This should have been done in
221d3a97 "; Revert "Recognize
graphicsmagick in image-dired"
Paul Eggert [Thu, 22 Dec 2016 18:13:46 +0000 (10:13 -0800)]
; Spelling fixes
Paul Eggert [Thu, 22 Dec 2016 17:25:58 +0000 (09:25 -0800)]
Pacify --enable-gcc-warnings
* src/charset.c (load_charset_map):
* src/coding.c (decode_coding_object):
* src/frame.c (make_frame):
* src/window.c (Frecenter):
Mark locals with UNINIT to silence false alarms from
-Wmaybe-uninitialized.
* src/lisp.h (SYMBOL_ALIAS, SYMBOL_BLV, SYMBOL_FWD)
(SET_SYMBOL_ALIAS, SET_SYMBOL_BLV, SET_SYMBOL_FWD):
Check and assume that values are nonnull. This pacifies
-Wmaybe-uninitialized in Fmake_variable_buffer_local and
Fmake_local_variable.
Eli Zaretskii [Thu, 22 Dec 2016 16:13:16 +0000 (18:13 +0200)]
Fix last change with thread marking under GC_CHECK_MARKED_OBJECTS
* src/thread.c (primary_thread_p): New function.
* src/alloc.c (mark_object): Use 'primary_thread_p' to bypass tests
meant for thread objects allocated dynamically.
* src/thread.h (primary_thread_p): Add prototype.
Tino Calancha [Thu, 22 Dec 2016 04:38:06 +0000 (13:38 +0900)]
; * test/lisp/buff-menu-tests.el: Fix typo in the header.
Noam Postavsky [Sun, 14 Aug 2016 02:13:56 +0000 (22:13 -0400)]
Use completion-at-point in verilog-mode
There were some functions in verilog-mode that implemented in-buffer
completion, but this needlessly duplicates completion-at-point
functionality, and the popup window management had problems
(see Bug #23842). We need to keep them for backwards compatibility with
older emacs versions, but use completion-at-point if available.
* lisp/progmodes/verilog-mode.el (verilog-toggle-completions): Mark as
obsolete if completion-cycle-threshold is available.
(verilog-mode-map, verilog-menu): Bind completion-at-point and
completion-help-at-point in preference to verilog-complete-word and
verilog-show-completions, respectively.
(verilog-mode): Add verilog-completion-at-point to
completion-at-point-functions.
(verilog-completion-at-point): New function.
(verilog-show-completions, verilog-complete-word): Use it to avoid code
duplication.
Reuben Thomas [Wed, 21 Dec 2016 17:30:44 +0000 (17:30 +0000)]
Keep default CASECHARS/NOT-CASECHARS for ispell built-in dictionaries
* lisp/textmodes/ispell.el (ispell-set-spellchecker-params): Do not
override CASECHARS and NOT-CASECHARS. The ispell dictionaries
retain their hardwired values, and all other dictionaries are given
sensible defaults.
Stefan Monnier [Wed, 21 Dec 2016 20:51:14 +0000 (15:51 -0500)]
* tex-mode.el (tex-compile-commands): Add luatex and xetex commands
Eli Zaretskii [Wed, 21 Dec 2016 20:16:24 +0000 (22:16 +0200)]
Fix aborts in GC under GC_CHECK_MARKED_OBJECTS
* src/alloc.c (mark_object) [GC_CHECK_MARKED_OBJECTS]: Don't abort
for thread objects. They are marked via the all_threads list, and
therefore don't need to be inserted into the red-black tree, so
mem_find will never find them. Reported by Daniel Colascione
<dancol@dancol.org> in
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00817.html.
Stefan Monnier [Wed, 21 Dec 2016 20:07:43 +0000 (15:07 -0500)]
* src/data.c (Fmake_variable_frame_local): Remove
* src/lisp.h (struct Lisp_Buffer_Local_Value): Remove `frame_local'.
* src/data.c (swap_in_symval_forwarding, set_internal)
(set_symbol_trapped_write, make_blv, Fmake_variable_buffer_local)
(Fmake_local_variable, Fkill_local_variable, Flocal_variable_p):
Don't pay attention to ->frame_local any more.
(syms_of_data): Remove Qtrapping_frame_local and don't defsubr
Smake_variable_frame_local.
* etc/NEWS (Incompatible Lisp Changes in Emacs 26.1): Announce removal
of make-variable-frame-local.
* lisp/help-fns.el (describe-variable): Don't handle the now impossible
frame-local case.
* lisp/subr.el (make-variable-frame-local): Remove obsolescence data.
* src/frame.c (store_frame_param):
* src/eval.c (specbind): Don't pay attention to ->frame_local any more.
* src/widget.c (first_frame_p): Remove, unused.
Paul Eggert [Wed, 21 Dec 2016 17:52:28 +0000 (09:52 -0800)]
Port dumping better to WSL
Problem reported by Angelo Graziosi in:
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00822.html
* src/sysdep.c (disable_address_randomization):
Detect buggy platforms where 'personality' always returns 0.
Michael Albinus [Wed, 21 Dec 2016 11:42:22 +0000 (12:42 +0100)]
Remove gateway methods in Tramp
* doc/misc/tramp.texi (Top, Configuration): Remove section
`Gateway methods', insert section `Firewalls' in menu.
(History): Gateways are removed now.
(Gateway methods): Remove section.
(Multi-hops, Traces and Profiles): Don't reference to gateways anymore.
(Firewalls): New section.
* etc/NEWS: Gateway methods in Tramp have been removed.
* lisp/net/tramp.el (tramp-methods): Adapt docstring.
(tramp-file-name-port, tramp-accept-process-output): Simplify.
* lisp/net/tramp-gw.el: Remove.
* lisp/net/tramp-sh.el (tramp-gw-tunnel-method)
(tramp-gw-socks-method): Remove declarations.
(tramp-methods) <scp, scpx, ssh, sshx, telnet, nc, plink, pscp>:
Remove `tramp-gw-args' and `tramp-default-port'. (Bug#18967)
(tramp-do-copy-or-rename-file-out-of-band)
(tramp-compute-multi-hops, tramp-maybe-open-connection):
Remove gateway support.
* test/lisp/net/tramp-tests.el (tramp-test03-file-name-defaults):
Remove gateway tests.
Mark Oteiza [Tue, 20 Dec 2016 16:14:53 +0000 (11:14 -0500)]
; Revert "Recognize graphicsmagick in image-dired"
This reverts commit
5c266405f559823038dfa900aaad66605f0d5287.
There are too many annoying differences between GM and IM to make this
default behavior.
Tino Calancha [Tue, 20 Dec 2016 10:22:15 +0000 (19:22 +0900)]
files-test-read-file-in-: Delete temporary dir on exit
* test/lisp/files-tests.el (files-test-read-file-in-~):
Create subdir inside dir.
Christopher Genovese [Tue, 20 Dec 2016 08:41:56 +0000 (17:41 +0900)]
ibuffer: New filters and commands
Add several new filters and improve documentation.
See discussion on:
https://lists.gnu.org/archive/html/emacs-devel/2016-11/msg00399.html
* lisp/ibuf-ext.el: Add paragraph to file commentary.
(ibuffer-saved-filters, ibuffer-filtering-qualifiers)
(ibuffer-filter-groups): Update doc string.
(ibuffer-unary-operand): Add new function that transparently
handles 'not' formats for compound filters.
(ibuffer-included-in-filter-p): Handle 'not' fully; update doc string.
(ibuffer-included-in-filter-p-1): Handle 'and' compound filters.
(ibuffer-decompose-filter): Handle 'and' as well,
and handle 'not' consistently with other uses.
(ibuffer-and-filter): New defun analogous to 'ibuffer-or-filter'.
(ibuffer--or-and-filter): New defun.
(ibuffer-or-filter, ibuffer-and-filter): Use it.
(ibuffer-format-qualifier): Handle 'and' filters as well.
(ibuffer-filter-by-basename, ibuffer-filter-by-file-extension)
(ibuffer-filter-by-directory, ibuffer-filter-by-starred-name)
(ibuffer-filter-by-modified, ibuffer-filter-by-visiting-file):
Add new pre-defined filters.
(ibuffer-filter-chosen-by-completion): Add new interactive command
for easily choosing a filter from the descriptions.
* lisp/ibuffer.el (ibuffer-mode-map):
Bind ibuffer-filter-by-basename, ibuffer-filter-by-file-extension,
ibuffer-filter-by-starred-name, ibuffer-filter-by-modified,
ibuffer-filter-by-visiting-file to '/b', '/.', '/*', '/i', '/v'
respectively; bind 'ibuffer-or-filter', 'ibuffer-and-filter',
'ibuffer-pop-filter' ,'ibuffer-pop-filter-group' and
'ibuffer-filter-disable' to '/|', '/&', '/<up>', '/S-<up>'
and '/ DEL' respectively.
* test/lisp/ibuffer-tests.el (ibuffer-autoload): Add appropriate
skip specification.
Add menu entries for the new filters.
(ibuffer-filter-inclusion-1, ibuffer-filter-inclusion-2
ibuffer-filter-inclusion-3, ibuffer-filter-inclusion-4
ibuffer-filter-inclusion-5, ibuffer-filter-inclusion-6
ibuffer-filter-inclusion-7, ibuffer-filter-inclusion-8
ibuffer-decompose-filter, ibuffer-and-filter
ibuffer-or-filter): Add new tests; they are skipped unless
ibuf-ext is loaded.
; * etc/NEWS: Add entries for new user-facing features.
Mark Oteiza [Tue, 20 Dec 2016 01:37:46 +0000 (20:37 -0500)]
Update NEWS
* etc/NEWS (Image-Dired): New section.
Mark Oteiza [Tue, 20 Dec 2016 01:35:02 +0000 (20:35 -0500)]
Recognize graphicsmagick in image-dired
* lisp/image-dired.el (image-dired-cmd-create-thumbnail-program):
(image-dired-cmd-create-thumbnail-options):
(image-dired-cmd-create-temp-image-program):
(image-dired-cmd-create-temp-image-options):
(image-dired-cmd-create-standard-thumbnail-options):
(image-dired-cmd-rotate-thumbnail-program):
(image-dired-cmd-rotate-thumbnail-options): Account for existence of
gm(1) executable.
Mark Oteiza [Tue, 20 Dec 2016 00:47:06 +0000 (19:47 -0500)]
Implement asynchronous thumbnail generation in image-dired
Additionally, all FOO-options defcustoms that were in fact shell command
strings have been converted to argument lists. Another method for
shrinking PNG thumbs with optipng(1) has been added.
* lisp/image-dired.el: Remove TODO item in commentary.
(image-dired-cmd-create-thumbnail-options):
(image-dired-cmd-create-temp-image-options):
(image-dired-cmd-rotate-thumbnail-options):
(image-dired-cmd-rotate-original-options):
(image-dired-cmd-write-exif-data-options):
(image-dired-cmd-read-exif-data-options): Convert to argument lists.
(image-dired-cmd-pngnq-program, image-dired-cmd-pngcrush-program):
Change string type to file.
(image-dired-cmd-create-standard-thumbnail-command): Remove.
(image-dired-cmd-pngnq-options):
(image-dired-cmd-create-standard-thumbnail-options):
(image-dired-cmd-optipng-program, image-dired-cmd-optipng-options):
New defcustoms.
(image-dired-queue, image-dired-queue-active-jobs):
(image-dired-queue-active-limit): New variables.
(image-dired-pngnq-thumb, image-dired-pngcrush-thumb):
(image-dired-optipng-thumb): New functions.
(image-dired-create-thumb-1): Renamed from image-dired-create-thumb.
Use start-process instead of call-process. Set file modes. Trigger
PNG file optimization in process sentinel.
(image-dired-thumb-queue-run, image-dired-create-thumb): New functions.
(image-dired-display-thumbs):
(image-dired-create-thumbs): Don't expect call-process return value.
(image-dired-display-image, image-dired-rotate-thumbnail): Use
start-process instead of call-process.
(image-dired-rotate-original, image-dired-set-exif-data):
(image-dired-get-exif-data): Adapt to arguments being an arg list.
Andreas Schwab [Mon, 19 Dec 2016 22:07:42 +0000 (23:07 +0100)]
Protect change of window's buffer in vertical-motion against unwinds (bug#25209)
* indent.c (restore_window_buffer): New function.
(Fvertical_motion): Use it to restore window's buffer.
Glenn Morris [Mon, 19 Dec 2016 18:32:55 +0000 (13:32 -0500)]
Improve default load-path for uninstalled CANNOT_DUMP builds
* src/lread.c (load_path_default) [CANNOT_DUMP]:
Use build load-path if we seem to be running uninstalled. (Bug#24974)
I think this became an issue several years ago when we stopped
using EMACSLOADPATH in the Makefiles; however this change should
improve the CANNOT_DUMP uninstalled case in general.
Eli Zaretskii [Mon, 19 Dec 2016 17:11:16 +0000 (19:11 +0200)]
Fix crashes upon C-g on Posix TTY frames
* src/thread.h (struct thread_state): New member not_holding_lock.
(maybe_reacquire_global_lock): Add prototype.
* src/thread.c: Include syssignal.h.
(maybe_reacquire_global_lock): New function.
(really_call_select): Set the not_holding_lock member of the
thread state before releasing the lock, and rest it after
re-acquiring the lock when the select function returns. Block
SIGINT while doing this to make sure we are not interrupted on TTY
frames.
* src/sysdep.c (block_interrupt_signal, restore_signal_mask): New
functions.
* src/syssignal.h (block_interrupt_signal, restore_signal_mask):
Add prototypes.
* src/keyboard.c (read_char) [THREADS_ENABLED]: Call
maybe_reacquire_global_lock. (Bug#25178)
Sam Steingold [Mon, 19 Dec 2016 16:44:18 +0000 (11:44 -0500)]
avoid Eager macro-expansion failure: (void-function string-to-list)
* loadup.el [ns]: "ucs-normalize" uses `string-to-list' which is defined
in "mule-util", so we have to load "mule-util" before "ucs-normalize",
otherwise I get "Eager macro-expansion failure" on "make bootstrap"
Michael Albinus [Mon, 19 Dec 2016 08:32:30 +0000 (09:32 +0100)]
Fix Bug#24980
* lisp/ido.el (ido-add-virtual-buffers-to-list):
Suppress Tramp invocation. (Bug#24980)
Philipp Stephani [Sat, 10 Dec 2016 20:39:55 +0000 (21:39 +0100)]
Add a new compile error regexp for Clang includes
Clang uses a slight variation of GCC's include format, causing includes
to be treated as warnings instead of informational messages. Use a new
regular expression instead.
* lisp/progmodes/compile.el
(compilation-error-regexp-alist-alist): New element
`clang-include' for Clang-style "included from" lines.
* test/lisp/progmodes/compile-tests.el
(compile-tests--test-regexps-data): Add unit test.
Alan Third [Sun, 18 Dec 2016 15:54:48 +0000 (15:54 +0000)]
Reinstate ispell character offset (bug#25219)
* lisp/textmodes/ispell.el (ispell-process-line): insert -1 where
ispell-offset used to be.
Mark Oteiza [Sun, 18 Dec 2016 14:41:31 +0000 (09:41 -0500)]
Bind new image-mode scroll commands in image-dired
* lisp/image-dired.el (image-dired-display-image-mode-map): Add bindings
to new image-mode commands.
Noam Postavsky [Thu, 8 Dec 2016 04:17:37 +0000 (23:17 -0500)]
Fix rx-any with range with ?\] and ?-
* lisp/emacs-lisp/rx.el: Make sure not to produce a circular
list (Bug#25123).
* test/lisp/emacs-lisp/rx-tests.el (rx-char-any): New test.
Mark Oteiza [Sun, 18 Dec 2016 12:28:03 +0000 (07:28 -0500)]
Use floor of mtime instead of rounding for thumb property
This seems to be the correct thing to do, at least more in line with
what at least one other implementation does. Anything using
gnome-desktop [0] effectively does the same, as
gnome_desktop_thumbnail_is_valid applies atol(3) to mtime for
comparison and time_t on GNU/Linux is a signed int.
[0] https://git.gnome.org/browse/gnome-desktop/
* lisp/image-dired.el (image-dired-create-thumb): Use floor here.
Reuben Thomas [Sat, 17 Dec 2016 19:09:41 +0000 (19:09 +0000)]
Fix spelling mistake in private defun name (Bug#25218)
lisp/textmodes/flyspell.el (flyspell-ajust-cursor-point): Rename to
`flyspell-adjust-cursor-point'.
Reuben Thomas [Sat, 17 Dec 2016 19:06:34 +0000 (19:06 +0000)]
Remove XEmacs support from flyspell.el (Bug#25218)
lisp/textmodes/flyspell.el (flyspell-prog-mode, flyspell-mode-on):
(flyspell-word, flyspell-delete-region-overlays):
(flyspell-correct-word-before-point): Remove XEmacs support.
(flyspell-xemacs-popup): Remove XEmacs-specific defun.
Michael Albinus [Sat, 17 Dec 2016 18:52:38 +0000 (19:52 +0100)]
More tests for Tramp
* lisp/net/tramp.el (tramp-drop-volume-letter): Handle quoted
file names.
* lisp/net/tramp-sh.el (tramp-make-copy-program-file-name): Quote file
name properly.
* test/lisp/net/tramp-tests.el (tramp-test05-expand-file-name):
Mark quoted file name as absolute. (Bug#25183)
(tramp--test-windows-nt-and-batch)
(tramp--test-windows-nt-and-pscp-psftp-p): New defuns.
(tramp--test-windows-nt-or-smb-p): Rename from
`tramp--test-smb-windows-nt-p'. Adapt callees.
(tramp--test-check-files): Improve checks for environment variables.
(tramp-test33-special-characters)
(tramp-test33-special-characters-with-stat)
(tramp-test33-special-characters-with-perl)
(tramp-test33-special-characters-with-ls, tramp-test34-utf8)
(tramp-test34-utf8-with-stat, tramp-test34-utf8-with-perl)
(tramp-test34-utf8-with-ls): Add more checks for skip.
Eli Zaretskii [Sat, 17 Dec 2016 17:38:36 +0000 (19:38 +0200)]
Fix comments
* src/thread.h (struct thread_state): Fix comments.
* src/process.c (wait_reading_process_output): Fix a typo in
commentary.
Eli Zaretskii [Sat, 17 Dec 2016 11:08:52 +0000 (13:08 +0200)]
Fix crashes on MS-Windows during dumping
* src/unexw32.c (get_section_info): Make extra_bss_size be the
maximum of extra_bss_size and extra_bss_size_static. This avoids
computing the size of the output file smaller than it actually
needs to be, which then causes copy_executable_and_dump_data to
write beyond the requested size of the file mapping, thus relying
on the OS roundup to page boundary to save us from ourselves. See
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00642.html
for the details.
* lib/stdio-impl.h: Revert the workaround fix of not including
errno.h for MinGW.
Mark Oteiza [Fri, 16 Dec 2016 15:14:01 +0000 (10:14 -0500)]
Be more selective clearing the image cache
* lisp/image-dired.el (image-dired-create-thumbs):
(image-dired-rotate-thumbnail, image-dired-refresh-thumb): Only clear
the current thumbnail file from the image cache.
Eli Zaretskii [Fri, 16 Dec 2016 10:50:06 +0000 (12:50 +0200)]
Unbreak the MinGW build
* lib/stdio-impl.h [__MINGW32__]: Don't include errno.h. Without
this, temacs crashes while dumping.
Nicolas Petton [Fri, 16 Dec 2016 10:18:04 +0000 (11:18 +0100)]
Make seq-into return the sequence when no conversion needed
* lisp/emacs-lisp/seq.el (seq-into): Do not convert the sequence when
no conversion is needed.
* test/lisp/emacs-lisp/seq-tests.el (test-seq-into-and-identity): Add
a regression test checking for identity.
Mark Oteiza [Fri, 16 Dec 2016 02:59:15 +0000 (21:59 -0500)]
New commands image-scroll-left and image-scroll-right
* etc/NEWS: Mention them.
* lisp/image-mode.el (image-scroll-left, image-scroll-right): New
functions.
Mark Oteiza [Fri, 16 Dec 2016 01:36:24 +0000 (20:36 -0500)]
More image-dired refactoring
* lisp/image-dired.el (image-dired-thumbnail-mode):
(image-dired-display-image-mode): Add :group 'image-dired so
customize-mode works.
(image-dired-display-image): Rearrange.
(image-dired-copy-with-exif-file-name): This map is for side effect.
(image-dired-dired-edit-comment-and-tags): Just use #'identity.
Mark Oteiza [Fri, 16 Dec 2016 00:58:33 +0000 (19:58 -0500)]
* lisp/image-dired.el: Turn on lexical-binding.
Mark Oteiza [Fri, 16 Dec 2016 00:55:47 +0000 (19:55 -0500)]
Teach image-dired to also generate large thumbs
* lisp/image-dired.el (image-dired-thumbnail-storage): Add
standard-large option.
(image-dired-thumb-size): Add condition for standard-large storage.
(image-dired-insert-thumbnail): Check for new option. Change
thumbnail path conditionally.
(image-dired-thumb-size): New function.
(image-dired-create-thumb, image-dired-line-up-dynamic): Use it.
Paul Eggert [Thu, 15 Dec 2016 20:18:28 +0000 (12:18 -0800)]
Merge from gnulib
This incorporates:
2016-12-14 xalloc-oversized: check for PTRDIFF_MAX too
2016-12-12 fpending: port to native Windows with MSVC
* .gitignore: Do not ignore lib/stdio-impl.h.
* lib/fpending.c, lib/xalloc-oversized.h, m4/fpending.m4:
Copy from gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* lib/stdio-impl.h:
New file, copied from gnulib.
* nt/gnulib.mk (EXTRA_DIST): Add stdio-impl.h.
Paul Eggert [Thu, 15 Dec 2016 20:06:01 +0000 (12:06 -0800)]
* emacs-document.svg: Append newline.
Mark Oteiza [Thu, 15 Dec 2016 19:40:32 +0000 (14:40 -0500)]
Don't abuse princ and spam messages
* lisp/image-dired.el (image-dired-format-properties-string): Nix princ.
(image-dired-display-thumb-properties):
(image-dired-dired-display-properties): Nix princ. Bind
message-log-max to nil.
Mark Oteiza [Thu, 15 Dec 2016 18:49:38 +0000 (13:49 -0500)]
Inherit things from special-mode and image-mode
* lisp/image-dired.el: Require image-mode library.
(image-dired-thumbnail-mode-map): Remove superfluous binding.
(image-dired-display-image-mode-map): Remove superfluous binding.
Add movement remaps from image-mode-map.
(image-dired-thumbnail-mode): Derive from special-mode.
(image-dired-display-image-mode): Derive from special-mode. Call
image-mode-setup-winprops.
Mark Oteiza [Thu, 15 Dec 2016 18:25:08 +0000 (13:25 -0500)]
Fix some image-dired customization types
* lisp/image-dired.el (image-dired): Add info link to defgroup.
(image-dired-dir, image-dired-gallery-dir): Set type to directory.
(image-dired-db-file, image-dired-temp-image-file):
(image-dired-cmd-create-thumbnail-program):
(image-dired-cmd-create-temp-image-program):
(image-dired-cmd-rotate-thumbnail-program):
(image-dired-cmd-rotate-original-program):
(image-dired-temp-rotate-image-file):
(image-dired-cmd-write-exif-data-program):
(image-dired-cmd-read-exif-data-program): Set type to file.
(image-dired-create-thumb, image-dired-line-up-dynamic): Check storage
type at runtime, since setting image-dired-thumb-size does not
automatically set image-dired-thumb-width and image-dired-thumb-height.
Eli Zaretskii [Thu, 15 Dec 2016 16:18:59 +0000 (18:18 +0200)]
Prevent crashes in xg_select due to concurrency
* src/xgselect.c (xg_select): Don't call Glib functions that use
'context' if we failed to acquire it. This means some other
thread owns the context, in which case both using the context and
calling block_input/unblock_input will step on that thread's toes
and eventually lead to crashes. (Bug#25172)
Nicolas Petton [Thu, 15 Dec 2016 09:24:57 +0000 (10:24 +0100)]
Fix circular list handling in seq-mapn
* lisp/emacs-lisp/seq.el (seq-mapn): Do not copy list arguments.
* test/lisp/emacs-lisp/seq-tests.el (test-seq-mapn-circular-lists):
Add a regression test.
Michael Albinus [Thu, 15 Dec 2016 08:37:35 +0000 (09:37 +0100)]
Check in tramp-tests.el, that environment variables are set correctly
* test/lisp/net/tramp-tests.el (tramp--test-check-files):
Check also, that environment variables are set correctly.
Dominique Quatravaux [Thu, 15 Dec 2016 08:37:00 +0000 (09:37 +0100)]
Protect environment variables with double quotes in Tramp
* lisp/net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
Protect environment variables with double quotes.
Copyright-paperwork-exempt: yes
Tino Calancha [Thu, 15 Dec 2016 06:02:32 +0000 (15:02 +0900)]
* lisp/ibuf-macs.el (define-ibuffer-filter): Wrap ,@body in a progn.
Mark Oteiza [Thu, 15 Dec 2016 01:36:06 +0000 (20:36 -0500)]
* lisp/image-dired.el (image-dired-create-thumb): Create parent directories.
Mark Oteiza [Wed, 14 Dec 2016 21:36:31 +0000 (16:36 -0500)]
* lisp/image-mode.el (image-mode-winprops-alist): Add docstring.
Mark Oteiza [Wed, 14 Dec 2016 21:34:12 +0000 (16:34 -0500)]
Recognize pngnq or pngnq-s9
* lisp/image-dired.el (image-dired-cmd-pngnq-program): Also consider
pngnq-s9 as a possible executable.
Mark Oteiza [Wed, 14 Dec 2016 19:34:21 +0000 (14:34 -0500)]
Update standard image-dired thumbnail location
* lisp/image-dired.el (image-dired-thumb-name): Conform to the latest
standard: consider XDG_CACHE_HOME, falling back on ~/.cache.
Mark Oteiza [Wed, 14 Dec 2016 17:25:04 +0000 (12:25 -0500)]
Reset window scroll when displaying an image
When viewing a large image full size and scrolling, for instance, to
the lower right corner, then selecting a much smaller image in the
thumbnail buffer, the window stays scrolled so the new image is out of
the window. One must scroll back to the "origin" to view the new
displayed image, or just kill the image-dired-display-image buffer and
try again. This fixes the issue.
* lisp/image-dired.el (image-dired-display-window-width):
(image-dired-display-window-height): Operate on a window as argument.
(image-dired-display-image): Bind (image-dired-display-window) and use
it. Set window vscroll and hscroll to zero when refreshing the
buffer's contents.
Mark Oteiza [Wed, 14 Dec 2016 03:56:42 +0000 (22:56 -0500)]
More image-dired polish
* lisp/image-dired.el (image-dired-file-name-at-point): New function.
(image-dired-thumbnail-mode, image-dired-display-image-mode): Disable
undo list. Add image-dired-file-name-at-point to
file-name-at-point-functions to facilitate find-file and friends.
(image-dired-thumbnail-display-external):
(image-dired-dired-display-external): Use start-process instead, to
avoid needlessly blocking and using a shell.
Phillip Lord [Thu, 27 Oct 2016 07:07:05 +0000 (08:07 +0100)]
Replace ldefs-boot with a much smaller file
* Makefile.in (bootstrap-build,generate-ldefs-boot): New targets.
(bootstrap): Depend on bootstrap-build.
* admin/ldefs-clean.el: New file.
* lisp/Makefile.in (compile-first): Depend on loaddefs.el
* lisp/ldefs-boot.el: Remove.
* lisp/ldefs-boot-auto.el: New file.
* lisp/ldefs-boot-manual.el: New file.
* lisp/loadup.el: Load ldefs-boot-manual.el.
* src/emacs.c (generating_ldefs_boot): New variable.
(main): Check whether we are generating ldefs.
* src/eval.c (autoload-do-load): Dump autoload forms to stderr when
requested.
* src/lisp.h (generating_ldefs_boot): New variable.
* admin/gitmerge.el, admin/make-tarball.txt, admin/notes/copyright,
lisp/Makefile.in, lisp/cus-dep.el, lisp/emacs-lisp/elint.el,
lisp/finder.el, lisp/loadup.el, msdos/mainmake.v2: Update reference to
ldefs-boot.
* admin/update_autogen: Alter mechanism for ldefs-boot generation.
Reuben Thomas [Tue, 13 Dec 2016 00:43:21 +0000 (00:43 +0000)]
Remove support for aspell < 0.60 (from 2004)
lisp/textmodes/ispell.el (ispell-check-version): Require Aspell 0.60.
(ispell-aspell-dictionary-alist): Remove check that we have Aspell 0.60.
Reuben Thomas [Tue, 13 Dec 2016 00:30:51 +0000 (00:30 +0000)]
Minor docstring and comment fixes to ispell.el
lisp/textmodes/ispell.el (ispell-aspell-dictionary-alist): Mention
ispell-aspell-dictionary-alist, not ispell-dictionary-alist.
(ispell-set-spellchecker-params): Change double-single quotes to
single single quotes in comment.
Reuben Thomas [Mon, 5 Dec 2016 21:11:52 +0000 (21:11 +0000)]
Remove unused variable
* lisp/textmodes/ispell.el (current-ispell-directory): Remove.
Reuben Thomas [Sun, 4 Dec 2016 22:01:56 +0000 (22:01 +0000)]
Remove XEmacs-specific ispell-with-no-warnings
* lisp/textmodes/ispell.el (ispell-with-no-warnings): Remove this
defmacro, needed only for XEmacs.
(ispell-command-loop, ispell-message): Use with-no-warnings directly.
Reuben Thomas [Sun, 4 Dec 2016 21:58:00 +0000 (21:58 +0000)]
Remove meaningless defconst ispell-version
* lisp/textmodes/ispell.el (ispell-version): Since ispell.el is now
firmly part of Emacs, and the version hasn’t changed since 2003, and
isn’t used anywhere, remove it. 3rd-party code can better use the
Emacs version, or feature or function checks.
(ispell-check-version): No longer report ispell.el version.
Reuben Thomas [Sun, 4 Dec 2016 21:55:19 +0000 (21:55 +0000)]
Remove boundp test for always-bound symbol
* lisp/textmodes/ispell.el (ispell-message): mail-yank-prefix is
defvar’d at the top of the file, so remove a test to see if it is
bound.
Reuben Thomas [Sun, 4 Dec 2016 21:50:18 +0000 (21:50 +0000)]
Remove support for ispell < 3.1.12
* lisp/textmodes/ispell.el (ispell-offset): Remove.
(ispell-check-version): Require ispell >= 3.1.12, released in 1994.
(ispell-process-line): No longer use ispell-offset.
Reuben Thomas [Sun, 4 Dec 2016 21:47:02 +0000 (21:47 +0000)]
Remove unused constant
* lisp/textmodes/ispell.el (ispell-required-version): Remove.
Reuben Thomas [Sun, 4 Dec 2016 19:20:19 +0000 (19:20 +0000)]
Remove support for old versions of supercite and GNUS from ispell.el
* lisp/textmodes/ispell.el (ispell-message): Require supercite >= 3.0
and GNUS >= 5. Not exactly the bleeding edge!
Reuben Thomas [Sun, 4 Dec 2016 14:39:42 +0000 (14:39 +0000)]
Remove remaining mentions of XEmacs from ispell.el
* lisp/textmodes/ispell.el (ispell-valid-dictionary-list):
(ispell-add-per-file-word-list): Remove mentions of XEmacs from
comments.
Reuben Thomas [Sun, 4 Dec 2016 14:38:51 +0000 (14:38 +0000)]
Remove XEmacs-specific minibuffer handling code from ispell.el
* lisp/textmodes/ispell.el (ispell-init-process): Assume we are not in
XEmacs.
Reuben Thomas [Sun, 4 Dec 2016 14:37:37 +0000 (14:37 +0000)]
Remove XEmacs-specific horizontal scrollbar handling in ispell.el
* lisp/textmodes/ispell.el (ispell-command-loop): Remove
XEmacs-specific code.